The technical field of this invention is computer systems administration and, more particularly, apparatus and methods for maintaining an accurate inventory of the software products installed on a computer.
Historically, the task of producing and maintaining an accurate software inventory (a list of software products that have been installed on a computer, or set of computers) was not difficult. Many computers in use were large mainframes, for which there were only a limited number of software vendors, and only a relatively small number of products to keep track of. Moreover, installation of most software was performed by only a limited group of persons, e.g., system administrators.
Since the advent of the personal computer, the task of maintaining software inventories has become dramatically more difficult. To begin, most personal computer users are capable of installing software packages, without the assistance--or control--of a system administrator.
Moreover, there has been a large increase in both the number and complexity of available software products, as well as an increase in the storage capacity of most computers. Further, modern computer storage systems have increased in complexity, typically their file systems are organized into directories, such that each directory can store several files. Thus maintaining a software inventory typically involves searching through a large and complex set of directory hierarchies.
Also complicating the task of maintaining a software inventory are the possibilities of multiple installations of a single product, incomplete installations of a product, and multiple instances of a single file belonging to one product.
Thus, as computers have evolved, the difficulty of creating and maintaining an accurate software inventory has dramatically increased.
It is an object of the present invention to provide a method and an apparatus for producing such an inventory.
It is a further object of the invention to produce a software inventory in a faster and more reliable way.